#include "varint.h"
#include<QColor>
#include "ui_varint.h"
#include<QVariant>
#include<QDebug>
#include<QMap>
#include<QStringList>
Varint::Varint(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::Varint)
{
    ui->setupUi(this);
//Vatint
    // //创建及其初始化
    QVariant vit1(98);
    qDebug()<<vit1.toInt();
    QVariant vit2("wangxuhui");
    qDebug()<<vit2.toString();

    //作为类的体现
    QMap<QString,QVariant> map;
    map["int"] = 89;
    map["String"] =  "shift";
    QColor QC(255,255,0);
    map["QColor"] = QC;
    //从这里的输出内容我可以为QVarint可以推测自己内容的类型
    qDebug()<<map;

    qDebug()<<vit1.type();
    qDebug()<<vit2.type();

    //对上面的map进行输出
    qDebug()<<map["int"]<<map["int"].toInt();
    qDebug()<<map["QString"]<<map["QString"].toString();

    //将QSTringList存入QVarint；
    QStringList qsl;
    qsl << "t" << "r" << "e" << "n" << "d";

    qsl << "t";
    qsl << "r";
    qsl << "e";
    qsl << "n";
    qsl << "d";

    QVariant qvit(qsl);
    if(qvit.type() == QVariant::StringList){//判断类型转换是否成功
        //这里不能弹出来问题没有解决（输入QVariant::后面的不能弹出来）
        QStringList qsl1=qvit.toStringList();
        for(int i=0; i < qsl1.size(); i++){
            qDebug()<<qsl1.at(i);
        }
    }

    // struct Student{
    //     int ID;
    //     QString name;
    //     int score;
    // };

    //存入自定义结构体
    Student stu;
    stu.ID = 1001;
    stu.name = "wangxuhui";
    stu.score = 100;

    QVariant qvit;
    // 将 Student 存入 QVariant
    qvit = QVariant::fromValue(stu);
    if(qvit.canConvert<Student>()){//检查是否已可以转换，

        Student temp_Stu = qvit.value<Student>();
        qDebug()<<temp_Stu.ID;
        qDebug()<<temp_Stu.name;
        qDebug()<<temp_Stu.score;
    }

}

Varint::~Varint()
{
    delete ui;
}
